Precoding is a technique by which each data stream at a network component (e.g. a base station) is weighted. Precoding may increase or maximize data throughput in a communications channel between the network component and a terminal (e.g. a UE). In multiple-input multiple-output (MIMO) systems, precoding may be a component of closed-loop link adaptation, whereby a transmit signal at the network component may be modified based on channel state information.
Precoding may be achieved by means of a matrix-multiplication of a given signal vector with a precoding matrix prior to transmission (e.g. by the network component). The precoding matrix may be determined based on a codebook of candidate precoding matrices. A size of the codebook (namely, the number of candidate precoding matrices) may be large, e.g. for communication systems or operation modes that may require accurate precoding. Determining the precoding matrix based on a large codebook of candidate precoding matrices may result in a significant computation load for a device configured to determine the precoding matrix, especially for such devices with tight limits on computational capacity and power consumption budget. Therefore, efficient ways of determining the precoding matrix are needed.